
        <html>
			<head>
			     <title>业务安全漏洞挖掘归纳总结 - sm0nk</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/web/6917">http://drops.wooyun.org/web/6917</a></h1>
				
      <p>
        <h1>0x00 索引说明</h1>

<hr />

<p>6.30在OWASP的分享，关于业务安全的漏洞检测模型。进一步的延伸科普。</p>

<p><img src="http://static.wooyun.org//drops/20150703/2015070302312847097.png" alt="enter image description here" /></p>

<!--more-->

<p><img src="http://static.wooyun.org//drops/20150703/2015070302312815571.png" alt="enter image description here" /></p>

<h1>0x01 身份认证安全</h1>

<hr />

<p><strong>1 暴力破解</strong></p>

<p>在没有验证码限制或者一次验证码可以多次使用的地方，使用已知用户对密码进行暴力破解或者用一个通用密码对用户进行暴力破解。 简单的验证码爆破。URL: http://zone.wooyun.org/content/20839</p>

<p>一些工具及脚本</p>

<p>Burpsuite</p>

<p>htpwdScan 撞库爆破必备 URL: https://github.com/lijiejie/htpwdScan</p>

<p>hydra 源码安装xhydra支持更多的协议去爆破 (可破WEB，其他协议不属于业务安全的范畴)</p>

<p><strong>2 session &amp; cookie类</strong></p>

<p>会话固定攻击：利用服务器的session不变机制，借他人之手获得认证和授权，冒充他人。案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-025427">WooYun: 新浪广东美食后台验证逻辑漏洞，直接登录后台，566764名用户资料暴露！</a> </p>

<p>Cookie仿冒：修改cookie中的某个参数可以登录其他用户。 案例：益云广告平台任意帐号登录  <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-051424">WooYun: 益云广告平台任意帐号登录</a> </p>

<p><strong>3 弱加密</strong></p>

<p>未使用https，是功能测试点，不好利用。</p>

<p>前端加密，用密文去后台校验，并利用smart decode可解</p>

<h1>0x02 业务一致性安全</h1>

<hr />

<p><strong>1 手机号篡改</strong></p>

<p>a) 抓包修改手机号码参数为其他号码尝试，例如在办理查询页面，输入自己的号码然后抓包，修改手机号码参数为其他人号码，查看是否能查询其他人的业务。</p>

<p><strong>2 邮箱或者用户篡改</strong></p>

<p>a) 抓包修改用户或者邮箱参数为其他用户或者邮箱</p>

<p>b) 案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-074441">WooYun: 绿盟RSAS安全系统全版本通杀权限管理员绕过漏洞，包括最新 RSAS V5.0.13.2</a> </p>

<p><strong>3 订单id篡改</strong></p>

<p>a) 查看自己的订单id，然后修改id（加减一）查看是否能查看其它订单信息。</p>

<p>b) 案例：  <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-044137">WooYun: 广之旅旅行社任意访问用户订单</a> </p>

<p><strong>4 商品编号篡改</strong></p>

<p>a) 例如积分兑换处，100个积分只能换商品编号为001,1000个积分只能换商品编号005，在100积分换商品的时候抓包把换商品的编号修改为005，用低积分换区高积分商品。</p>

<p>b) 案例：联想某积分商城支付漏洞再绕过  <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-041617">WooYun: 联想某积分商城支付漏洞再绕过</a> </p>

<p><strong>5 用户id篡改</strong></p>

<p>a) 抓包查看自己的用户id，然后修改id（加减1）查看是否能查看其它用户id信息。</p>

<p>b) 案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-0111617">WooYun: 拉勾网百万简历泄漏风险(包括手机、邮件、应聘职位等信息、还可冒充企业身份筛选简历、发面试通知等)</a> </p>

<h1>0x03 业务数据篡改</h1>

<hr />

<p><strong>1 金额数据篡改</strong></p>

<p>a) 抓包修改金额等字段，例如在支付页面抓取请求中商品的金额字段，修改成任意数额的金额并提交，查看能否以修改后的金额数据完成业务流程。 b) 案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-0117083">WooYun: 12308订单支付时的总价未验证漏洞(支付逻辑漏洞)</a> </p>

<p><strong>2 商品数量篡改</strong></p>

<p>a) 抓包修改商品数量等字段，将请求中的商品数量修改成任意数额，如负数并提交，查看能否以修改后的数量完成业务流程。 b) 案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-0109037">WooYun: 蔚蓝团支付逻辑漏洞(可负数支付)</a> </p>

<p><strong>3 最大数限制突破</strong></p>

<p>a) 很多商品限制用户购买数量时，服务器仅在页面通过js脚本限制，未在服务器端校验用户提交的数量，通过抓包修改商品最大数限制，将请求中的商品数量改为大于最大数限制的值，查看能否以修改后的数量完成业务流程。</p>

<p><strong>4 本地js参数修改</strong></p>

<p>a) 部分应用程序通过Javascript处理用户提交的请求，通过修改Javascript脚本，测试修改后的数据是否影响到用户。</p>

<h1>0x04 用户输入合规性</h1>

<hr />

<p>1 注入测试 请参考http://wiki.wooyun.org/web:sql</p>

<p>2 XSS测试 请参考http://wiki.wooyun.org/web:xss</p>

<p>3 Fuzz</p>

<p>a) 功能测试用的多一些，有可能一个超长特殊字符串导致系统拒绝服务或者功能缺失。（当然fuzz不单单这点用途。）</p>

<p>b) 不太符合的案例，但思路可借鉴： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-048293">WooYun: 建站之星模糊测试实战之任意文件上传漏洞</a> </p>

<p>c) 可能会用的工具 —— spike</p>

<p>4 其他用用户输入交互的应用漏洞</p>

<h1>0x05 密码找回漏洞</h1>

<hr />

<p><strong>1 大力推荐BMa的《密码找回逻辑漏洞总结》</strong></p>

<p>http://drops.wooyun.org/web/5048</p>

<p>a) 密码找回逻辑测试一般流程</p>

<p>i. 首先尝试正常密码找回流程，选择不同找回方式，记录所有数据包</p>

<p>ii. 分析数据包，找到敏感部分</p>

<p>iii. 分析后台找回机制所采用的验证手段</p>

<p>iv. 修改数据包验证推测</p>

<p>b) 脑图 （详情请参考BMa的《密码找回逻辑漏洞总结》）</p>

<p><img src="http://static.wooyun.org//drops/20150703/2015070302312839779.png" alt="enter image description here" /></p>

<h1>0x06 验证码突破</h1>

<hr />

<p>验证码不单单在登录、找密码应用，提交敏感数据的地方也有类似应用，故单独分类，并进一步详情说明。</p>

<p><strong>1 验证码暴力破解测试</strong></p>

<p>a) 使用burp对特定的验证码进行暴力破解</p>

<p>b) 案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-093932">WooYun: 盟友88电商平台任意用户注册与任意用户密码重置漏洞打包</a> </p>

<p><strong>2 验证码时间、次数测试</strong></p>

<p>a) 抓取携带验证码的数据包不断重复提交，例如：在投诉建议处输入要投诉的内容信息，及验证码参数，此时抓包重复提交数据包，查看历史投诉中是否存在重复提交的参数信息。</p>

<p>b) 案例：</p>

<p><strong>3 验证码客户端回显测试</strong></p>

<p>a 当客户端有需要和服务器进行交互，发送验证码时，即可使用firefox按F12调出firebug就可看到客户端与服务器进行交互的详细信息</p>

<p><strong>4 验证码绕过测试</strong></p>

<p>a) 当第一步向第二步跳转时，抓取数据包，对验证码进行篡改清空测试，验证该步骤验证码是否可以绕过。</p>

<p>b) 案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-098765">WooYun: 中国电信某IDC机房信息安全管理系统设计缺陷致使系统沦陷</a> </p>

<p><strong>5 验证码js绕过</strong></p>

<p>a) 短信验证码验证程序逻辑存在缺陷，业务流程的第一步、第二部、第三步都是放在同一个页面里，验证第一步验证码是通过js来判断的，可以修改验证码在没有获取验证码的情况下可以填写实名信息，并且提交成功。</p>

<h1>0x07 业务授权安全</h1>

<hr />

<p><strong>1 未授权访问</strong></p>

<p>a) 非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。可以尝试在登录某网站前台或后台之后，将相关的页面链接复制于其他浏览器或其他电脑上进行访问，看是否能访问成功。</p>

<p><strong>2 越权访问</strong></p>

<p>越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定</p>

<p>a) 垂直越权（垂直越权是指使用权限低的用户可以访问权限较高的用户）</p>

<p>b) 水平越权（水平越权是指相同权限的不同用户可以互相访问）（wooyun-2010-0100991 PHPEMS多处存在水平权限问题）</p>

<p>c) 《我的越权之道》URL：http://drops.wooyun.org/tips/727</p>

<h1>0x08 业务流程乱序</h1>

<hr />

<p><strong>1 顺序执行缺陷</strong></p>

<p>a) 部分网站逻辑可能是先A过程后B过程然后C过程最后D过程</p>

<p>b) 用户控制着他们给应用程序发送的每一个请求，因此能够按照任何顺序进行访问。于是，用户就从B直接进入了D过程，就绕过了C。如果C是支付过程，那么用户就绕过了支付过程而买到了一件商品。如果C是验证过程，就会绕过验证直接进入网站程序了。</p>

<p>c) 案例：</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-047677">WooYun: 万达某分站逻辑错误可绕过支付直接获得取票密码</a> </p>

<p>http://wooyun.org/bugs/wooyun-2010-0108184</p>

<h1>0x09 业务接口调用安全</h1>

<hr />

<p><strong>1 重放攻击</strong></p>

<p>在短信、邮件调用业务或生成业务数据环节中（类：短信验证码，邮件验证码，订单生成，评论提交等），对其业务环节进行调用（重放）测试。如果业务经过调用（重放）后被多次生成有效的业务或数据结果</p>

<p>a) 恶意注册</p>

<p>b) 短信炸弹</p>

<p>在测试的过程中，我们发现众多的金融交易平台仅在前端通过JS校验时间来控制短信发送按钮，但后台并未对发送做任何限制，导致可通过重放包的方式大量发送恶意短信</p>

<p>案例： <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2015-094545">WooYun: 一亩田交易网逻辑漏洞（木桶原理）</a> </p>

<p><strong>2 内容编辑</strong></p>

<p>类似案例如下：</p>

<p>点击“获取短信验证码”，并抓取数据包内容，如下图。通过分析数据包，可以发现参数sendData/insrotxt的内容有客户端控制，可以修改为攻击者想要发送的内容</p>

<p><img src="http://static.wooyun.org//drops/20150703/2015070302312854742.png" alt="enter image description here" /></p>

<p>将内容修改“恭喜你获得由xx银行所提供的iphone6一部，请登录http://www.xxx.com领取，验证码为236694”并发送该数据包，手机可收到修改后的短信内容，如下图：</p>

<p><img src="http://static.wooyun.org//drops/20150703/2015070302312971068.png" alt="enter image description here" /></p>

<h1>0x10 时效绕过测试</h1>

<hr />

<p>大多有利用的案例发生在验证码以及业务数据的时效范围上，在之前的总结也有人将12306的作为典型，故，单独分类。</p>

<p><strong>1 时间刷新缺陷</strong></p>

<p>12306网站的买票业务是每隔5s，票会刷新一次。但是这个时间确实在本地设置的间隔。于是，在控制台就可以将这个时间的关联变量重新设置成1s或者更小，这样刷新的时间就会大幅度缩短（主要更改autoSearchTime本地参数）。 案例：</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-048391">WooYun: 12306自动刷票时间可更改漏洞</a> </p>

<p><strong>2 时间范围测试</strong></p>

<p>针对某些带有时间限制的业务，修改其时间限制范围，例如在某项时间限制范围内查询的业务，修改含有时间明文字段的请求并提交，查看能否绕过时间限制完成业务流程。例如通过更改查询手机网厅的受理记录的month范围，可以突破默认只能查询六个月的记录。</p>

<h1>0x11 参考</h1>

<hr />

<p>@eversec</p>

<p>应用程序逻辑错误总结 http://drops.wooyun.org/papers/1418</p>

<p>密码找回功能可能存在的问题 http://drops.wooyun.org/papers/287</p>

<p>密码找回功能可能存在的问题（补充） http://drops.wooyun.org/web/3295</p>

<p>密码找回逻辑漏洞总结 http://drops.wooyun.org/web/5048</p>

<p>支付漏洞的三种常见类型——加固方案 http://zone.wooyun.org/content/878</p>

<p>在线支付逻辑漏洞总结 http://drops.wooyun.org/papers/345</p>

<p>金融行业平台常见安全漏洞与防御 http://www.freebuf.com/news/special/61082.html</p>

<p>我的越权之道 http://drops.wooyun.org/tips/727</p>

<p>安全科普：看视频理解Web应用安全漏洞TOP10（IBM内部视频） http://www.freebuf.com/vuls/63426.html</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          